package com.sgcc.pda.data.dao;

import android.content.Context;

import com.sgcc.pda.data.entity.base.AppInfo;
import com.sgcc.pda.data.entity.base.BehaviorTrajectoryInfo;
import com.sgcc.pda.data.entity.base.ExceptionInfo;
import com.sgcc.pda.data.entity.base.RegisterInfo;
import com.sgcc.pda.data.entity.base.SharepreferenceInfo;
import com.sgcc.pda.sdk.entity.BaseTaskInfo;

import java.util.ArrayList;
import java.util.List;

/**
 * @创建者：suven on 2020/3/24 16:12
 * @描述：与平台交互内容提供者
 * @版本：1.0
 * @修改人：
 * @修改时间：
 * @修改说明：
 * @修改版本：
 */
public interface ContentProviderDao {
    /**
     * 保存值
     *
     * @param context
     * @param obj 保存信息
     * @return
     */
    void setSharepreference(Context context, SharepreferenceInfo obj);

    /**
     * 通过键 获取String值
     *
     * @param context
     * @param editKey
     * @param key
     * @return
     */
    String getSharepreferenceValue(Context context, String editKey, String key);

    /**
     * 通过键 获取bool值
     *
     * @param context
     * @param editKey
     * @param key
     * @return
     */
    boolean getSharepreferenceBooleanValue(Context context, String editKey, String key);

    /**
     * 保存异常信息
     *
     * @param context
     * @param obj     异常信息
     * @return
     */
    void saveExceptionInfo(Context context, ExceptionInfo obj);

    /**
     * APP待安装列表
     *
     * @param context
     * @return
     */
    List<AppInfo> getAppInfoListNeededInstall(Context context);

    /**
     * 安全单元1.0获取注册信息
     *
     * @param context
     * @param REG_IDX 索引
     * @return
     */
    List<RegisterInfo> getRegisterInfoList(Context context, String REG_IDX);

    /**
     * 获取知识库信息
     *
     * @param context
     * @return
     */
    List<String> getKnowsInfoResonNames(Context context);

    /**
     * 保存更新APP状态
     *
     * @param context
     * @param packageName 包名
     * @param addUpData 状态
     * @return
     */
    boolean saveAddOrUpdateAppBaseInfoState(Context context, String packageName, String addUpData);

    /**
     * 获取基础工单信息列表
     *
     * @param context
     * @param selectArgs
     */
    List<BaseTaskInfo> getBaseTaskInfoList(Context context, String[] selectArgs);

    /**
     * 保存用户行为轨迹信息 2：保存开关锁上传信息  3：记录电表执行时长及设备信息
     */
    void saveBehaviorTrajectoryInfoContext(Context context, BehaviorTrajectoryInfo behaviorTrajectoryInfo);

    /**
     * 1：删除用户行为轨迹信息  2：删除开关锁上传信息 3：记录电表执行时长及设备信息
     *
     * @param mContext
     */
    void deleteBehaviorTrajectoryInfo(Context mContext, String businessIdentification, String sonBusinessIdentification);

    /**
     * 更新用户行为轨迹
     */
    boolean updateBehaviorTrajectoryInfo(Context mContext, String id);

    /**
     * 1获取行为轨迹 2：查询开关锁上传信息 3：记录电表执行时长及设备信息
     *
     * @param context
     * @return
     */
    ArrayList<BehaviorTrajectoryInfo> getBehaviorTrajectoryInfo(Context context, String businessIdentification, String sonBusinessIdentification);

    /**
     * 获取登录UID信息
     *
     * @return uid, userCode, deptCode, ip, port
     */
    List<String> getLoginInfo(Context context);

    /**
     * 获取水印信息
     *
     * @param context
     * @return list<0> 用户编号    list<1> 组织编号    list<2> IP地址
     */
    List<String> getWaterMarkInfo(Context context);

}
